var mysql = require('mysql');

/**
    host：连接的数据库地址。（默认:localhost）
    port：连接地址对应的端口。（默认:3306）
    localAddress: 源IP地址使用TCP连接。（可选）
    socketPath:当主机和端口参数被忽略的时候，可以填写一个Unix的Socket地址。
    user: mysql的连接用户名。
    password: 对应用户的密码。
    database: 所需要连接的数据库的名称。（可选）
    charset: 连接的编码形式。这就是mysql中的整理。（例如：utf8_general_ci）如果被指定，则作为默认的整理排序规则。（默认：utf8_general_ci）
    timezone:用来保存当前本地的时区。（默认：local）
    connectTimeout: 设置在连接的时候，超过多久以后未响应则返回失败。（默认：10000）
    stringifyObjects: stringify对象代替转换值。issue# 501。（默认：false）
    insecureAuth：使用旧（不安全）的连接方式去连接MySQL。（默认：false）
    typeCast: 确定列值是否需要转换为本地JavaScript类型。（默认：true）
    queryFormat:自定义查询的方式。地址：Custom format.
    supportBigNumbers: 如果你使用了BIGINT和DECIMAL格式的表列，那么需要开启这个参数来支持。
    （默认：false）只有当他们超过JavaScript所能表达的最长的字节的时候，如果没有设置这个参数，则会将过长的数字作为字符串传递。否则，返回对象的长度。如果supportBigNumbers参数被忽略，则这个参数也会被忽略。
    dateStrings:一些日期类型(TIMESTAMP, DATETIME, DATE)会以Strings的类型返回，然后转换成JavaScript的日期对象。（默认：false）
    debug:是否把连接情况打印到文件。（默认：false）
    trace: 生成错误的堆栈跟踪，包括库入口的调用位置（“长堆栈的轨迹”）。一般会造成轻微的性能损失。（默认：true）
 */
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'my_data'
});

connection.connect(function(err){
    if(err) {
        console.error("error connecting: " + err.stack);
        return;
    }
    console.log('connected as id ' + connection.threadId);
});
connection.query('select * from t_user', function(err, rows, fields){
    if(err) { throw err;}
    console.log({err, rows, fields});
});
// 所有查询队列执行完，断开连接
connection.end();
// 立即断开使用：connection.destroy();